package com.zenithmind.news.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zenithmind.news.pojo.entity.NewsStatistics;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

/**
 * 新闻统计Mapper接口
 * 
 * @author ZenithMind Team
 * @since 2025-01-09
 */
@Mapper
public interface NewsStatisticsMapper extends BaseMapper<NewsStatistics> {

    /**
     * 根据新闻ID查询统计信息
     * 
     * @param newsId 新闻ID
     * @return 统计信息
     */
    NewsStatistics selectByNewsId(@Param("newsId") String newsId);

    /**
     * 增加阅读量
     * 
     * @param newsId 新闻ID
     * @param increment 增量
     * @return 更新行数
     */
    int incrementViewCount(@Param("newsId") String newsId, @Param("increment") Long increment);

    /**
     * 增加点赞数
     * 
     * @param newsId 新闻ID
     * @param increment 增量
     * @return 更新行数
     */
    int incrementLikeCount(@Param("newsId") String newsId, @Param("increment") Long increment);

    /**
     * 增加收藏数
     * 
     * @param newsId 新闻ID
     * @param increment 增量
     * @return 更新行数
     */
    int incrementFavoriteCount(@Param("newsId") String newsId, @Param("increment") Long increment);

    /**
     * 增加分享数
     * 
     * @param newsId 新闻ID
     * @param increment 增量
     * @return 更新行数
     */
    int incrementShareCount(@Param("newsId") String newsId, @Param("increment") Long increment);

    /**
     * 增加评论数
     * 
     * @param newsId 新闻ID
     * @param increment 增量
     * @return 更新行数
     */
    int incrementCommentCount(@Param("newsId") String newsId, @Param("increment") Long increment);

    /**
     * 更新热度评分
     * 
     * @param newsId 新闻ID
     * @param hotScore 热度评分
     * @return 更新行数
     */
    int updateHotScore(@Param("newsId") String newsId, @Param("hotScore") Double hotScore);

    /**
     * 初始化新闻统计记录
     * 
     * @param newsId 新闻ID
     * @return 插入行数
     */
    int initNewsStatistics(@Param("newsId") String newsId);

    /**
     * 批量初始化新闻统计记录
     * 
     * @param newsIds 新闻ID列表
     * @return 插入行数
     */
    int batchInitNewsStatistics(@Param("newsIds") java.util.List<String> newsIds);
}
